package org.dromara.demo.designPattern.责任链模式.controller;

import org.dromara.demo.designPattern.责任链模式.entity.AuthInfo;
import org.dromara.demo.designPattern.责任链模式.service.AuthService;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 违背设计模式实现
 */
public class AuthController {
    private SimpleDateFormat f = new SimpleDateFormat("yyyy￾MM-dd HH:mm:ss");// 时间格式化

    /**
     * 按照场景需求审批流程，平常系统上线时只需要三级负责人审批就可以，
     * 但是到了“618”大促期间，就需要二级负责人及一级负责人一起加入审批系统。
     * 这里使用非常直接的if判断方式实现这种需求
     * @param uId
     * @param orderId
     * @param authDate
     * @return
     * @throws ParseException
     */
    public AuthInfo doAuth(String uId, String orderId, Date authDate) throws ParseException {
         // 三级审批
        Date date = AuthService.queryAuthInfo("1000013", orderId);
        if (null == date)
            return new AuthInfo("0001", "单号：", orderId, " 状态：待三级审批负责人 ");
         // 二级审批
        if (authDate.after(f.parse("2020-06-01 00:00:00")) && authDate.before(f.parse("2020-06-25 23:59:59"))) {
            date = AuthService.queryAuthInfo("1000012", orderId);
            if (null == date)
                return new AuthInfo("0001", "单 号：", orderId, " 状态：待二级审批负责人 ");
        }
           // 一级审批
        if (authDate.after(f.parse("2020-06-11 00:00:00")) && authDate.before(f.parse("2020-06-20 23:59:59"))) {
            date = AuthService.queryAuthInfo("1000011", orderId);
            if (null == date)
                return new AuthInfo("0001", "单 号：", orderId, " 状态：待一级审批负责人 ");
        }
        return new AuthInfo("0001", "单号：", orderId, " 状态：审批完成");
    }
}
